package routers

import (
	"github.com/gin-gonic/gin"
	"log"
	"net/http"
	"strconv"
	"ztool/common"
	"ztool/dao"
)

/**
查询所有标签
*/
func getTagList(c *gin.Context) {
	//post获取是否有关键字参数
	serachKey := c.PostForm("key")

	list := dao.GetTagList(serachKey)
	r := common.RespData(list)
	c.JSON(http.StatusOK, r)
}

/**
分页查询
*/
func getTagPages(c *gin.Context) {

	//post参数中传递
	currentPage, err := strconv.ParseInt(c.PostForm("currentPage"), 10, 32)

	if err != nil {
		log.Println(err.Error())
		c.JSON(http.StatusOK, common.RespError("参数错误"))
		return
	}

	pages := dao.QueryTagPage(int32(currentPage))
	pages.Code = 0
	c.JSON(http.StatusOK, pages)
}

/** addTag 添加 */
func addTag(c *gin.Context) {
	var tag = dao.Tag{}

	if c.ShouldBind(&tag) == nil {
		//gorm会自动配置
		//tag.CreatedAt = time.Now()
		dao.AddTag(&tag)
		c.JSON(http.StatusOK, common.RespSuccess("添加成功"))
		return
	}

	c.JSON(http.StatusOK, common.RespError("添加失败"))
}

/** updateTag 编辑 */
func updateTag(c *gin.Context) {
	var tag = dao.Tag{}

	if c.ShouldBind(&tag) == nil {
		dao.UpdateTag(&tag)
		c.JSON(http.StatusOK, common.RespSuccess("修改成功"))
		return
	}

	c.JSON(http.StatusOK, common.RespError("修改失败"))
}

/** delTag 删除 */
func delTag(c *gin.Context) {
	id := c.Param("id")

	if id == "" {
		c.JSON(http.StatusOK, common.RespError("参数错误"))
		return
	}

	if err := dao.DelTag(&id); err != nil {
		c.JSON(http.StatusOK, common.RespError("删除失败,错误:"+err.Error()))
		return
	}
	c.JSON(http.StatusOK, common.RespSuccess("删除成功"))
}

// loadTagRouter 将路由组注册进去
func loadTagRouter(e *gin.Engine) {
	//标签
	tag := e.Group("/sys/tags")
	{
		//查询所有
		tag.Any("/page", getTagPages)
		tag.POST("/list", getTagList)
		tag.POST("/add", addTag)
		tag.POST("/update", updateTag)
		tag.POST("/delete/:id", delTag)
	}
}
